home *** CD-ROM | disk | FTP | other *** search
/ IRIX Base Documentation 2002 November / SGI IRIX Base Documentation 2002 November.iso / usr / share / catman / p_man / cat3 / SCSL / stbmv.z / stbmv
Encoding:
Text File  |  2002-10-03  |  19.9 KB  |  397 lines

  1.  
  2.  
  3.  
  4. SSSSTTTTBBBBMMMMVVVV((((3333SSSS))))                                                            SSSSTTTTBBBBMMMMVVVV((((3333SSSS))))
  5.  
  6.  
  7.  
  8. NNNNAAAAMMMMEEEE
  9.      SSSSTTTTBBBBMMMMVVVV, DDDDTTTTBBBBMMMMVVVV, CCCCTTTTBBBBMMMMVVVV, ZZZZTTTTBBBBMMMMVVVV - Multiplies a real or complex vector by a
  10.      real or complex triangular band matrix
  11.  
  12. SSSSYYYYNNNNOOOOPPPPSSSSIIIISSSS
  13.      Single precision
  14.  
  15.           Fortran:
  16.                CCCCAAAALLLLLLLL SSSSTTTTBBBBMMMMVVVV ((((_u_p_l_o,,,, _t_r_a_n_s,,,, _d_i_a_g,,,, _n,,,, _k,,,, _a,,,, _l_d_a,,,, _x,,,, _i_n_c_x))))
  17.  
  18.           C/C++:
  19.                ####iiiinnnncccclllluuuuddddeeee <<<<ssssccccssssllll____bbbbllllaaaassss....hhhh>>>>
  20.                vvvvooooiiiidddd ssssttttbbbbmmmmvvvv ((((cccchhhhaaaarrrr *_u_p_l_o,,,, cccchhhhaaaarrrr *_t_r_a_n_s,,,, cccchhhhaaaarrrr *_d_i_a_g,,,, iiiinnnntttt _n,,,, iiiinnnntttt _k,,,,
  21.                ffffllllooooaaaatttt *_a,,,, iiiinnnntttt _l_d_a,,,, ffffllllooooaaaatttt *_x,,,, iiiinnnntttt _i_n_c_x))));;;;
  22.  
  23.      Double precision
  24.  
  25.           Fortran:
  26.                CCCCAAAALLLLLLLL DDDDTTTTBBBBMMMMVVVV ((((_u_p_l_o,,,, _t_r_a_n_s,,,, _d_i_a_g,,,, _n,,,, _k,,,, _a,,,, _l_d_a,,,, _x,,,, _i_n_c_x))))
  27.  
  28.           C/C++:
  29.                ####iiiinnnncccclllluuuuddddeeee <<<<ssssccccssssllll____bbbbllllaaaassss....hhhh>>>>
  30.                vvvvooooiiiidddd ddddttttbbbbmmmmvvvv ((((cccchhhhaaaarrrr *_u_p_l_o,,,, cccchhhhaaaarrrr *_t_r_a_n_s,,,, cccchhhhaaaarrrr *_d_i_a_g,,,, iiiinnnntttt _n,,,, iiiinnnntttt _k,,,,
  31.                ddddoooouuuubbbblllleeee *_a,,,, iiiinnnntttt _l_d_a,,,, ddddoooouuuubbbblllleeee *_x,,,, iiiinnnntttt _i_n_c_x))));;;;
  32.  
  33.      Single precision complex
  34.  
  35.           Fortran:
  36.                CCCCAAAALLLLLLLL CCCCTTTTBBBBMMMMVVVV ((((*_u_p_l_o,,,, _t_r_a_n_s,,,, _d_i_a_g,,,, _n,,,, _k,,,, _a,,,, _l_d_a,,,, _x,,,, _i_n_c_x))))
  37.  
  38.           C/C++:
  39.                ####iiiinnnncccclllluuuuddddeeee <<<<ssssccccssssllll____bbbbllllaaaassss....hhhh>>>>
  40.                vvvvooooiiiidddd ccccttttbbbbmmmmvvvv ((((cccchhhhaaaarrrr *_u_p_l_o,,,, cccchhhhaaaarrrr *_t_r_a_n_s,,,, cccchhhhaaaarrrr *_d_i_a_g,,,, iiiinnnntttt _n,,,, iiiinnnntttt _k,,,,
  41.                ssssccccssssllll____ccccoooommmmpppplllleeeexxxx *_a,,,, iiiinnnntttt _l_d_a,,,, ssssccccssssllll____ccccoooommmmpppplllleeeexxxx *_x,,,, iiiinnnntttt _i_n_c_x))));;;;
  42.  
  43.           C++ STL:
  44.                ####iiiinnnncccclllluuuuddddeeee <<<<ccccoooommmmpppplllleeeexxxx....hhhh>>>>
  45.                ####iiiinnnncccclllluuuuddddeeee <<<<ssssccccssssllll____bbbbllllaaaassss....hhhh>>>>
  46.                vvvvooooiiiidddd ccccttttbbbbmmmmvvvv ((((cccchhhhaaaarrrr *_u_p_l_o,,,, cccchhhhaaaarrrr *_t_r_a_n_s,,,, cccchhhhaaaarrrr *_d_i_a_g,,,, iiiinnnntttt _n,,,, iiiinnnntttt _k,,,,
  47.                ccccoooommmmpppplllleeeexxxx<<<<ffffllllooooaaaatttt>>>> *_a,,,, iiiinnnntttt _l_d_a,,,, ccccoooommmmpppplllleeeexxxx<<<<ffffllllooooaaaatttt>>>> *_x,,,, iiiinnnntttt _i_n_c_x))));;;;
  48.  
  49.      Double precision complex
  50.  
  51.           Fortran:
  52.                CCCCAAAALLLLLLLL ZZZZTTTTBBBBMMMMVVVV ((((_u_p_l_o,,,, _t_r_a_n_s,,,, _d_i_a_g,,,, _n,,,, _k,,,, _a,,,, _l_d_a,,,, _x,,,, _i_n_c_x))))
  53.  
  54.           C/C++:
  55.                ####iiiinnnncccclllluuuuddddeeee <<<<ssssccccssssllll____bbbbllllaaaassss....hhhh>>>>
  56.                vvvvooooiiiidddd zzzzttttbbbbmmmmvvvv cccchhhhaaaarrrr *_u_p_l_o,,,, cccchhhhaaaarrrr *_t_r_a_n_s,,,, cccchhhhaaaarrrr *_d_i_a_g,,,, iiiinnnntttt _n,,,, iiiinnnntttt _k,,,,
  57.                ssssccccssssllll____zzzzoooommmmpppplllleeeexxxx *_a,,,, iiiinnnntttt _l_d_a,,,, ssssccccssssllll____zzzzoooommmmpppplllleeeexxxx *_x,,,, iiiinnnntttt _i_n_c_x))));;;;
  58.  
  59.  
  60.  
  61.  
  62.  
  63.                                                                         PPPPaaaaggggeeee 1111
  64.  
  65.  
  66.  
  67.  
  68.  
  69.  
  70. SSSSTTTTBBBBMMMMVVVV((((3333SSSS))))                                                            SSSSTTTTBBBBMMMMVVVV((((3333SSSS))))
  71.  
  72.  
  73.  
  74.           C++ STL:
  75.                ####iiiinnnncccclllluuuuddddeeee <<<<ccccoooommmmpppplllleeeexxxx....hhhh>>>>
  76.                ####iiiinnnncccclllluuuuddddeeee <<<<ssssccccssssllll____bbbbllllaaaassss....hhhh>>>>
  77.                vvvvooooiiiidddd zzzzttttbbbbmmmmvvvv ((((cccchhhhaaaarrrr *_u_p_l_o,,,, cccchhhhaaaarrrr *_t_r_a_n_s,,,, cccchhhhaaaarrrr *_d_i_a_g,,,, iiiinnnntttt _n,,,, iiiinnnntttt _k,,,,
  78.                ccccoooommmmpppplllleeeexxxx<<<<ddddoooouuuubbbblllleeee>>>> *_a,,,, iiiinnnntttt _l_d_a,,,, ccccoooommmmpppplllleeeexxxx<<<<ddddoooouuuubbbblllleeee>>>> *_x,,,, iiiinnnntttt _i_n_c_x))));;;;
  79.  
  80. IIIIMMMMPPPPLLLLEEEEMMMMEEEENNNNTTTTAAAATTTTIIIIOOOONNNN
  81.      These routines are part of the SCSL Scientific Library and can be loaded
  82.      using either the ----llllssssccccssss or the ----llllssssccccssss____mmmmpppp option.  The ----llllssssccccssss____mmmmpppp option
  83.      directs the linker to use the multi-processor version of the library.
  84.  
  85.      When linking to SCSL with ----llllssssccccssss or ----llllssssccccssss____mmmmpppp, the default integer size is
  86.      4 bytes (32 bits). Another version of SCSL is available in which integers
  87.      are 8 bytes (64 bits).  This version allows the user access to larger
  88.      memory sizes and helps when porting legacy Cray codes.  It can be loaded
  89.      by using the ----llllssssccccssss____iiii8888 option or the ----llllssssccccssss____iiii8888____mmmmpppp option. A program may use
  90.      only one of the two versions; 4-byte integer and 8-byte integer library
  91.      calls cannot be mixed.
  92.  
  93.      The C and C++ prototypes shown above are appropriate for the 4-byte
  94.      integer version of SCSL. When using the 8-byte integer version, the
  95.      variables of type iiiinnnntttt become lllloooonnnngggg lllloooonnnngggg and the <<<<ssssccccssssllll____bbbbllllaaaassss____iiii8888....hhhh>>>> header
  96.      file should be included.
  97.  
  98. DDDDEEEESSSSCCCCRRRRIIIIPPPPTTTTIIIIOOOONNNN
  99.      SSSSTTTTBBBBMMMMVVVV and DDDDTTTTBBBBMMMMVVVV multiply a real vector by a real triangular band matrix.
  100.  
  101.      CCCCTTTTBBBBMMMMVVVV and ZZZZTTTTBBBBMMMMVVVV multiply a complex vector by a complex triangular band
  102.      matrix.
  103.  
  104.      These routines perform one of the following matrix-vector operations:
  105.  
  106.           _x <- _A_x
  107.  
  108.           _x <- _A_T_x
  109.  
  110.           _x <- _A_H_x (CCCCTTTTBBBBMMMMVVVV and ZZZZTTTTBBBBMMMMVVVV only)
  111.  
  112.      where _A_T is the transpose of _A, _A_H is the conjugate transpose of _A, _x is
  113.      an _n-element vector, and _A may be either a unit or nonunit _n-by-_n upper
  114.      or lower triangular band matrix with (_k+1) diagonals.
  115.  
  116.      See the NOTES section of this man page for information about the
  117.      interpretation of the data types described in the following arguments.
  118.  
  119.      These routines have the following arguments:
  120.  
  121.      _u_p_l_o      Character.  (input)
  122.                Specifies whether the matrix is upper or lower triangular, as
  123.                follows:
  124.  
  125.  
  126.  
  127.  
  128.  
  129.                                                                         PPPPaaaaggggeeee 2222
  130.  
  131.  
  132.  
  133.  
  134.  
  135.  
  136. SSSSTTTTBBBBMMMMVVVV((((3333SSSS))))                                                            SSSSTTTTBBBBMMMMVVVV((((3333SSSS))))
  137.  
  138.  
  139.  
  140.                _u_p_l_o = 'U' or 'u':  _A is an upper triangular matrix.
  141.                _u_p_l_o = 'L' or 'l' _A is a lower triangular matrix.
  142.  
  143.                For C/C++, a pointer to this character is passed.
  144.  
  145.      _t_r_a_n_s     Character.  (input)
  146.                Specifies the operation to be performed, as follows:
  147.  
  148.                _t_r_a_n_s = 'N' or 'n':  _x <- _A_x
  149.  
  150.                _t_r_a_n_s = 'T' or 't':  _x <- _A_T_x
  151.  
  152.                _t_r_a_n_s = 'C' or 'c':  _x <- _A_T_x (SSSSTTTTBBBBMMMMVVVV, DDDDTTTTBBBBMMMMVVVV),
  153.  
  154.                or _x <- _A_H_x (CCCCTTTTBBBBMMMMVVVV, ZZZZTTTTBBBBMMMMVVVV)
  155.  
  156.                For C/C++, a pointer to this character is passed.
  157.  
  158.      _d_i_a_g      Character.  (input)
  159.                Specifies whether _A is unit triangular, as follows:
  160.  
  161.                _d_i_a_g = 'U' or 'u':  _A is assumed to be unit triangular.
  162.                _d_i_a_g = 'N' or 'n':  _A is not assumed to be unit triangular.
  163.  
  164.                For C/C++, a pointer to this character is passed.
  165.  
  166.      _n         Integer.  (input)
  167.                Specifies the order of matrix _A.  _n >= 0.
  168.  
  169.      _k         Integer.  (input)
  170.  
  171.                _u_p_l_o = 'U' or 'u':  _k specifies the number of superdiagonals of
  172.                matrix _A.
  173.                _u_p_l_o = 'L' or 'l':  _k specifies the number of subdiagonals of
  174.                matrix _A.
  175.  
  176.                _k >= 0.
  177.  
  178.      _a         Array of dimension (_l_d_a,_n).  (input)
  179.                SSSSTTTTBBBBMMMMVVVV: Single precision array.
  180.                DDDDTTTTBBBBMMMMVVVV: Double precision array.
  181.                CCCCTTTTBBBBMMMMVVVV: Single precision complex array.
  182.                ZZZZTTTTBBBBMMMMVVVV: Double precision complex array.
  183.  
  184.                Before entry with _u_p_l_o = 'U' or 'u', the leading (_k+1)-by-_n
  185.                upper part of array _a must contain the upper triangular band
  186.                part of the matrix of coefficients, supplied column-by-column,
  187.                with the leading diagonal of the matrix in row (_k+1) of the
  188.                array, the first superdiagonal starting at position 2 in row _k,
  189.                and so on.  The top left _k-by-_k triangle of array _a is not
  190.                referenced.
  191.  
  192.  
  193.  
  194.  
  195.                                                                         PPPPaaaaggggeeee 3333
  196.  
  197.  
  198.  
  199.  
  200.  
  201.  
  202. SSSSTTTTBBBBMMMMVVVV((((3333SSSS))))                                                            SSSSTTTTBBBBMMMMVVVV((((3333SSSS))))
  203.  
  204.  
  205.  
  206.                Before entry with _u_p_l_o = 'L' or 'l', the leading (_k+1)-by-_n
  207.                part of array _a must contain the lower triangular band part of
  208.                the matrix of coefficients, supplied column-by-column, with the
  209.                leading diagonal of the matrix in row 1 of the array, the first
  210.                subdiagonal starting at position 1 in row 2, and so on.  The
  211.                bottom right _k-by-_k triangle of array _a is not referenced.
  212.  
  213.                See the NOTES section for examples of Fortran code that
  214.                transfer upper and lower triangular band matrices from
  215.                conventional full matrix storage to band storage.
  216.  
  217.                When _d_i_a_g = 'U' or 'u', these routines assume that all elements
  218.                of the array _a that represent diagonal elements of the matrix _A
  219.                are 1.  In this case, neither of these routines will reference
  220.                any of the diagonal elements.
  221.  
  222.      _l_d_a       Integer.  (input)
  223.                Specifies the first dimension of _a as declared in the calling
  224.                program.  _l_d_a >= (_k+1).
  225.  
  226.      _x         Array of dimension 1+(_n-1) * |_i_n_c_x|.  (input and output)
  227.                SSSSTTTTBBBBMMMMVVVV: Single precision array.
  228.                DDDDTTTTBBBBMMMMVVVV: Double precision array.
  229.                CCCCTTTTBBBBMMMMVVVV: Single precision complex array.
  230.                ZZZZTTTTBBBBMMMMVVVV: Double precision complex array.
  231.                Contains the vector _x.  On exit, the transformed vector
  232.                overwrites array _x.
  233.  
  234.      _i_n_c_x      Integer.  (input)
  235.                Specifies the increment for the elements of _x.  _i_n_c_x must not
  236.                be 0.
  237.  
  238. NNNNOOOOTTTTEEEESSSS
  239.      The following program segment transfers an upper triangular band matrix
  240.      from conventional full matrix storage to band storage:
  241.  
  242.               DO 20, J = 1, N
  243.                  M = K + 1 - J
  244.                  DO 10, I = MAX( 1, J - K ), J
  245.                     A( M + I, J ) = MATRIX( I, J )
  246.           10     CONTINUE
  247.           20  CONTINUE
  248.  
  249.      The following program segment transfers a lower triangular band matrix
  250.      from conventional full matrix storage to band storage:
  251.  
  252.               DO 20, J = 1, N
  253.                  M = 1 - J
  254.                  DO 10, I = J, MIN( N, J + K )
  255.                     A( M + I, J ) = MATRIX( I, J )
  256.           10     CONTINUE
  257.           20  CONTINUE
  258.  
  259.  
  260.  
  261.                                                                         PPPPaaaaggggeeee 4444
  262.  
  263.  
  264.  
  265.  
  266.  
  267.  
  268. SSSSTTTTBBBBMMMMVVVV((((3333SSSS))))                                                            SSSSTTTTBBBBMMMMVVVV((((3333SSSS))))
  269.  
  270.  
  271.  
  272.      SSSSTTTTBBBBMMMMVVVV, DDDDTTTTBBBBMMMMVVVV, CCCCTTTTBBBBMMMMVVVV and ZZZZTTTTBBBBMMMMVVVV are Level 2 Basic Linear Algebra
  273.      Subprograms (Level 2 BLAS).
  274.  
  275.      When working backward (_i_n_c_x < 0), each routine starts at the end of the
  276.      vector and moves backward, as follows:
  277.  
  278.           _x(1-_i_n_c_x * (_n-1)), _x(1-_i_n_c_x * (_n-2)), ..., _x(1)
  279.  
  280.  
  281.    DDDDaaaattttaaaa TTTTyyyyppppeeeessss
  282.      The following data types are described in this documentation:
  283.  
  284.           TTTTeeeerrrrmmmm UUUUsssseeeedddd                     DDDDaaaattttaaaa ttttyyyyppppeeee
  285.  
  286.      Fortran:
  287.  
  288.           Array dimensioned _n           xxxx((((nnnn))))
  289.  
  290.           Array of dimensions (_m,_n)     xxxx((((mmmm,,,,nnnn))))
  291.  
  292.           Character                     CCCCHHHHAAAARRRRAAAACCCCTTTTEEEERRRR
  293.  
  294.           Integer                       IIIINNNNTTTTEEEEGGGGEEEERRRR (IIIINNNNTTTTEEEEGGGGEEEERRRR****8888 for ----llllssssccccssss____iiii8888[[[[____mmmmpppp]]]])
  295.  
  296.           Single precision              RRRREEEEAAAALLLL
  297.  
  298.           Double precision              DDDDOOOOUUUUBBBBLLLLEEEE PPPPRRRREEEECCCCIIIISSSSIIIIOOOONNNN
  299.  
  300.           Single precision complex      CCCCOOOOMMMMPPPPLLLLEEEEXXXX
  301.  
  302.           Double precision complex      DDDDOOOOUUUUBBBBLLLLEEEE CCCCOOOOMMMMPPPPLLLLEEEEXXXX
  303.  
  304.      C/C++:
  305.  
  306.           Array dimensioned _n           xxxx[[[[_n]]]]
  307.  
  308.           Array of dimensions (_m,_n)     xxxx[[[[mmmm****nnnn]]]]
  309.  
  310.           Character                     cccchhhhaaaarrrr
  311.  
  312.           Integer                       iiiinnnntttt (lllloooonnnngggg lllloooonnnngggg for ----llllssssccccssss____iiii8888[[[[____mmmmpppp]]]])
  313.  
  314.           Single precision              ffffllllooooaaaatttt
  315.  
  316.           Double precision              ddddoooouuuubbbblllleeee
  317.  
  318.           Single precision complex      ssssccccssssllll____ccccoooommmmpppplllleeeexxxx
  319.  
  320.           Double precision complex      ssssccccssssllll____zzzzoooommmmpppplllleeeexxxx
  321.  
  322.  
  323.  
  324.  
  325.  
  326.  
  327.                                                                         PPPPaaaaggggeeee 5555
  328.  
  329.  
  330.  
  331.  
  332.  
  333.  
  334. SSSSTTTTBBBBMMMMVVVV((((3333SSSS))))                                                            SSSSTTTTBBBBMMMMVVVV((((3333SSSS))))
  335.  
  336.  
  337.  
  338.      C++ STL:
  339.  
  340.           Array dimensioned _n           xxxx[[[[_n]]]]
  341.  
  342.           Array of dimensions (_m,_n)     xxxx[[[[mmmm****nnnn]]]]
  343.  
  344.           Character                     cccchhhhaaaarrrr
  345.  
  346.           Integer                       iiiinnnntttt (lllloooonnnngggg lllloooonnnngggg for ----llllssssccccssss____iiii8888[[[[____mmmmpppp]]]])
  347.  
  348.           Single precision              ffffllllooooaaaatttt
  349.  
  350.           Double precision              ddddoooouuuubbbblllleeee
  351.  
  352.           Single precision complex      ccccoooommmmpppplllleeeexxxx<<<<ffffllllooooaaaatttt>>>>
  353.  
  354.           Double precision complex      ccccoooommmmpppplllleeeexxxx<<<<ddddoooouuuubbbblllleeee>>>>
  355.  
  356.      Note that you can explicitly declare multidimensional C/C++ arrays
  357.      provided that the array dimensions are swapped with respect to the
  358.      Fortran declaration (e.g., xxxx[[[[nnnn]]]][[[[mmmm]]]] in C/C++ versus xxxx((((mmmm,,,,nnnn)))) in Fortran).
  359.      To avoid a compiler type mismatch error in C++ (or a compiler warning
  360.      message in C), however, the array should be cast to a pointer of the
  361.      appropriate type when passed as an argument to a SCSL routine.
  362.  
  363. SSSSEEEEEEEE AAAALLLLSSSSOOOO
  364.      IIIINNNNTTTTRRRROOOO____SSSSCCCCSSSSLLLL(3S), IIIINNNNTTTTRRRROOOO____BBBBLLLLAAAASSSS2222(3S)
  365.  
  366.      IIIINNNNTTTTRRRROOOO____CCCCBBBBLLLLAAAASSSS(3S) for information about using the C interface to Fortran 77
  367.      Basic Linear Algebra Subprograms (legacy BLAS) set forth by the Basic
  368.      Linear Algebra Subprograms Technical Forum.
  369.  
  370.  
  371.  
  372.  
  373.  
  374.  
  375.  
  376.  
  377.  
  378.  
  379.  
  380.  
  381.  
  382.  
  383.  
  384.  
  385.  
  386.  
  387.  
  388.  
  389.  
  390.                                                                         PPPPaaaaggggeeee 6666
  391.  
  392.  
  393.  
  394.  
  395.  
  396.  
  397.